package nc.pu.pub.rest.filter;

import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import java.io.IOException;

public class CustomResponseInterceptor implements ContainerResponseFilter {
    @Override
    public void filter(ContainerRequestContext containerResponseContext,ContainerResponseContext responseContext) throws IOException {
        // 在这里可以获取响应相关信息，如状态码、响应头、响应体等
        int statusCode = responseContext.getStatus();
        String contentType = (String) responseContext.getHeaders().getFirst("Content-Type");

        // 可以进行一些处理，如日志记录、修改响应头等
        if (statusCode == 200) {
            // 例如，当状态码为200时，添加一个自定义响应头
            responseContext.getHeaders().add("Custom-Response-Header", "success");
        }

        // 也可以修改响应体等内容，但这通常需要更复杂的处理
        // 这里只是示例，比如可以对响应体进行加密等操作
        // 假设响应体是一个字符串，可以进行如下操作（实际情况可能更复杂）
        String responseBody = (String) responseContext.getEntity();
        if (responseBody!= null) {
            // 这里只是简单修改，比如添加一个后缀
            responseContext.setEntity(responseBody + " - modified by responseInterceptor");
        }
    }

}